import os
import numpy as np
import pandas as pd

# 设置DataFrame不显示小数点
pd.set_option('display.precision', 0)


def get_desktop_path():
    return os.path.join(os.path.expanduser("~"), 'Desktop') + "\\每日动环\\3.0"


def get_today_date(df_today):
    today = pd.to_datetime('today')
    time_column = '发生时间' if '发生时间' in df_today.columns else '开始时间'
    df_today[time_column] = pd.to_datetime(df_today[time_column])
    return df_today[df_today[time_column].dt.date == today]


def process_znv(file_path):
    df = pd.read_excel(file_path, header=6)
    # 假设需要过滤的地点
    df = df[~df['局站类型'].isin(['CSC监控中心', 'LSC监控中心'])]
    df['监控中心'] = df['监控中心'].str[:2]
    result = df.groupby(['监控中心', '告警级别']).size().unstack(fill_value=0)
    result.rename(columns={'一级': '一级告警', '二级': '二级告警', '三级': '三级告警', '四级': '四级告警'},
                  inplace=True)
    return result


def process_vertiv(file_path):
    df = pd.read_excel(file_path)
    location_map = {'广州联通': '广州', '江门联通维谛动环监控系统': '江门', '佛山联通': '佛山', '肇庆联通': '肇庆',
                    '中山联通动环监控': '中山', '湛江联通': '湛江', '汕头联通': '汕头',
                    '中国联通华南（东莞）数据中心二期': '松山湖', '惠州联通动环监控系统': '惠州',
                    '珠海联通监控中心': '珠海', '韶关联通': '韶关', '广州白云联通IDC': '白云北',
                    '东莞联通监控中心': '东莞', '揭阳联通动环监控': '揭阳', '梅州联通动环监控': '梅州',
                    '潮州联通监控中心': '潮州', '广州联通知识城': '知识城', '阳江联通IDC机房': '阳江',
                    '汕尾联通': '汕尾', '清远联通': '清远'}
    df['监控中心'] = df['监控中心'].map(location_map)
    result = df.groupby(['监控中心', '事件等级']).size().unstack(fill_value=0)
    return result


def main():
    folder_path = get_desktop_path()
    file_names = os.listdir(folder_path)
    locations_order = ['广州', '深圳', '东莞', '佛山', '佛山三山', '中山', '惠州', '珠海', '江门', '汕头', '湛江',
                       '揭阳',
                       '肇庆', '韶关', '清远', '茂名', '梅州', '潮州', '阳江', '河源', '汕尾', '云浮', '科学城',
                       '松山湖',
                       '白云北', '知识城']
    levels_order = ['一级告警', '二级告警', '三级告警', '四级告警']

    results = []
    for name in file_names:
        file_path = os.path.join(folder_path, name)
        if "devicealarmdetail" in name:
            result = process_znv(file_path)
        elif 'SC' in name:
            result = process_vertiv(file_path)
        results.append(result)

    # 合并结果并输出
    if results:
        final_result = pd.concat(results, axis=1)
        final_result = final_result.reindex(index=locations_order)#, columns=levels_order)
        final_result.fillna(0, inplace=True)
        final_result.to_excel(r'C:\Users\00\Desktop\3.0动环告警数量统计.xlsx', sheet_name="sheet1", index=True,
                              header=True)
        print('转换成功！！！')
    else:
        print('没有找到相关文件进行转换。')


if __name__ == "__main__":
    main()
